#! /usr/bin/perl 
# premier arg : fic pattern, 2e arg : fic cordial

open (TERMINO, "<$ARGV[0]");     # le fichier de pattern 
while (my $terme=<TERMINO>)
{
	chomp ($terme) ;  
	$terme=~s/ +/ /g ; 
	$terme=~s/\r$//g ; 
	# remplacer tous les espaces en trop par un seul espace ; ainsi que le retour à la ligne de windows 
	open (CORDIAL, "<$ARGV[1]");
	# poncfaib/poncforte --> frontière de syntagme. donc on va lire le fichier jusqu'à ces ponc
	$out="$ARGV[1]-extrait-$terme.txt" ; 
	open (OUT, ">$out"); 
	# imprimer la sortie dans des fichiers différents selon le nom du fichier cordialisé et la ligne du motif traitée 
	my @POS=() ; 
	my @TOKEN=() ;
	while (my $ligne=<CORDIAL>)
	{
		chomp ($ligne) ;
		$ligne=~s/\r$//g ;
		if ($ligne!~/PCT/)
		{
			my @LISTE = split(/\t/, $ligne); # ("token", "lemme", "POS")
			#print "PATRON LU <$terme> : LIGNE LUE <@LISTE>\n" ;  
			push (@POS, $LISTE[2]);  
			push (@TOKEN, $LISTE[0]);
		}
		else 
		{
			# on est arrivé sur une PCT, on va la traiter 
			# voir ce qui est trouvé entre l'intervalle des 2 PCT 
			# print "-------------------------------------\n" ; 
			# print "<@TOKEN>\n" ;
			# print "<@POS>\n" ; 
			# print "TERME CHERCHE : $terme \n "; 			
			# $a=<STDIN>; 
			###############################################
			# transformer une liste en un scalaire : join("séparateur", @liste) 
			# si match, imprimer 
			my $pos=join(" ", @POS) ;
			my $token=join(" ", @TOKEN) ;		
			while ($pos=~/$terme/g) 
			# parcourir ce scalaire, chercher globalement avec le "g"
			# tant que le $pos contiennent le $terme cherché 
			{				
				my $blanc_terme=0;
				while ($terme=~/\s/g)
				{
					$blanc_terme++ ;
					# tant qu'on rencontre un espace dans le terme, incrémente le $blanc_terme 
				}
				my $avant_corr=$` ; 
				# le string avant la partie de match avec le $terme 
				my $cpt_blanc=0;
				while ($avant_corr=~/\s/g)
				{
					$cpt_blanc++ ; 
				}
				# compte le nombre de blanc avant la correspondance --> indice pour token
				# une autre façon pour compter le nbr d'espaces dans une variable : $cpt=()=$avant_corr~/ /g ; 
				for (my $i=$cpt_blanc; $i<=$cpt_blanc+$blanc_terme; $i++)
				# sauter la partie non correspondante dans le $token, imprimer juste la partie du match 
				{
					print OUT $TOKEN[$i]." " ; 
				}
				print OUT "\n" ; 				
			}
			# c'est fini pour la recherche du match, on vide ces 2 listes avant de recommencer 
			@POS=() ; 
			@TOKEN=() ; 
		}		
	}
	close (CORDIAL); 
}
close (TERMINO); 